package com.ecarx.camera.worker.car;

/**
 * 车身传感器可用状态、取值或监听的接口定义
 */
public interface ICarSensorProxy {

    /**
     * 获取传感器的支持状态
     * @param sensorId 传感器Id
     * @return 功能是否支持
     */
    boolean isSensorSupported(int sensorId);

    /**
     * 获取传感器的可用状态
     * @param sensorId 传感器Id
     * @return
     */
    boolean isSensorActive(int sensorId);

    /**
     * 获取传感器的事件值
     * @param sensorId 传感器Id
     * @return 传感器的事件值
     */
    int getSensorEvent(int sensorId);

    /**
     * 获取传感器的float取值
     * @param sensorId 传感器Id
     * @return 传感器的float取值
     */
    float getSensorFloatValue(int sensorId);

    /**
     * 注册传感器数据监听
     * @param listener 监听
     * @param sensorId 传感器Id
     * @return 操作是否成功
     */
    boolean registerListener(ISensorListener listener, int sensorId);


    /**
     * 注销传感器数据监听
     * @param listener 监听
     * @return 操作是否成功
     */
    boolean unregisterListener(ISensorListener listener);

    /**
     * 传感器取值变化的回调监听接口定义
     */
    interface ISensorListener {
        /**
         * 事件型传感器event状态变化的回调
         * @param sensorId 传感器Id
         * @param event 传感器事件
         */
        void onSensorEventChanged(int sensorId, int event);

        /**
         * 持续型传感器数据更新的回调
         * @param sensorId 传感器Id
         * @param value 传感器数据
         */
        void onSensorValueChanged(int sensorId, float value);

        /**
         * 传感器的可用状态发生变化的回调
         * @param sensorId 传感器Id
         * @param functionStatus 传感器的可用状态
         */
        void onSensorSupportedChanged(int sensorId, @FunctionStatus int functionStatus);
    }
}
